import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import AutoImport from "unplugin-auto-import/vite";
import Components from "unplugin-vue-components/vite";
import vueJsx from "@vitejs/plugin-vue-jsx";
import { LayuiVueResolver } from "unplugin-vue-components/resolvers";
// import VueDevTools from "vite-plugin-vue-devtools";
import { resolve } from "path";
import legacy from "@vitejs/plugin-legacy";

const excludeComponents = ["LightIcon", "DarkIcon", "LayJsonSchemaForm"];

export default defineConfig({
  esbuild: {
    charset: "ascii",
  },
  server: {
    host: true,
    port: 9529,
    proxy: {
      "/api": {
        target: "http://101.43.198.190:9527/",
        ws: true, //用于支持websocket
        changeOrigin: true, //
        rewrite: (path) => path.replace(/^\/api/, ""), //将所有含/api路径的，去掉/api转发给服务器
      },
    },
  },
  resolve: {
    alias: [
      {
        find: "@",
        replacement: resolve(__dirname, "./src"),
      },
      {
        find: "banner-vue",
        replacement: "vue/dist/vue.esm-bundler.js",
      },
    ],
  },
  plugins: [
    // VueDevTools(),
    vueJsx({
      // options are passed on to @vue/babel-plugin-jsx
    }),
    AutoImport({
      resolvers: [LayuiVueResolver()],
      imports: ["vue", "vue-router", "@vueuse/core", "pinia"],
    }),
    Components({
      resolvers: [
        LayuiVueResolver({
          resolveIcons: true,
          exclude: excludeComponents,
        }),
      ],
    }),
    vue(),
    legacy({
      modernPolyfills: ["es.array.to-sorted"],
    }),
  ],
});
